package it.webbased.site.client;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

@SuppressWarnings("serial")
public class ContactData implements Serializable {

	@Override
	public String toString() {
		String msg =  "ContactData [<ul>\n";
		for(String s: params.keySet()) {
			msg += "  <li>" + s + " = " + params.get(s).getValue()+ "</li>\n";
		}
		msg += "</ul>]";
		return msg;
	}
	
	private Map<String, ContactDataItem> params = new LinkedHashMap<String, ContactDataItem>();
	
	public ContactData () {
		params.put("Nome", new ContactDataItem(true,ContactDataItem.ItemType.BOX));
		params.put("Cognome", new ContactDataItem(true,ContactDataItem.ItemType.BOX));
		params.put("Azienda", new ContactDataItem(false,ContactDataItem.ItemType.BOX));
		params.put("E-mail", new ContactDataItem(true,ContactDataItem.ItemType.EMAIL));
		params.put("Telefono", new ContactDataItem(false,ContactDataItem.ItemType.BOX));
		params.put("Indirizzo", new ContactDataItem(false,ContactDataItem.ItemType.BOX));
		params.put("Città", new ContactDataItem(false,ContactDataItem.ItemType.BOX));
		params.put("Provincia", new ContactDataItem(false,ContactDataItem.ItemType.BOX));
		params.put("CAP", new ContactDataItem(false,ContactDataItem.ItemType.BOX));
		params.put("Note", new ContactDataItem(false,ContactDataItem.ItemType.AREA));
	}
	
	public ContactDataItem get(String key) {
		return params.get(key);
	}
	
	public boolean setValue(String key, String value) {
		if(params.containsKey(key)) {
			params.get(key).setValue(value);
			return true;
		} else
			return false;
	}
	
	public String validate(boolean entitize) {
		String ret = new String();
		for(String i : params.keySet()) {
			if(!params.get(i).validate(entitize))
				ret += "<li>" +i + "</li>";
		}
		return ret;
	}
	
	public Set<String> getKeys() {
		return params.keySet();
	}
}
